package com.hnxxxy.mapper;

import com.hnxxxy.pojo.*;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

@Mapper
public interface UserOperationMapper {
    /**
     * 日志记录
     * @param log 日志信息
     * @return 受影响行数
     */
    int log(Log log);

    /**
     * 添加用户
     * @param user 用户信息
     * @return 受影响行数
     */
    int insertUser(User user);

    /**
     * 添加用户登录信息
     * @param user_login 用户登录信息
     * @return 受影响行数
     */
    int insertUser_login(User_login user_login);

    /**
     * 当前用户申请加入社团操作
     * @param user_ass 申请信息
     * @return 受影响行数
     */
    int insertUserAssExa(User_ass user_ass);

    /**
     * 当前用户申请创建社团操作
     * @param association 创建社团的信息
     * @return 受影响行数
     */
    int insertAss(Association association);

    /**
     * 放弃申请社团
     * @param id user_ass表id
     * @return 受影响行数
     */
    int deleteUserAssExa(int id);

    /**
     * 修改用户信息
     * @param user 用户信息
     * @return 受影响行数
     */
    int updateUserInfo(User user);

    /**
     * 修改密码
     * @param password 密码
     * @return 受影响行数
     */
    int updateUserPassword(String password);

    /**
     * 查询用户角色
     * @param username 学号
     * @return 用户角色
     */
    List<Role> queryUserRole(String username);

    /**
     * 查询用户权限
     * @param username 学号
     * @return 用户权限
     */
    List<Jurisdiction> queryUserJur(String username);

    /**
     * 通过username查询用户登录信息
     * @param username 学号
     * @return 用户登录信息
     */
    User_login queryUserLogin(String username);

    /**
     * 查询盐
     * @param username 学号
     * @return 用户的盐
     */
    String queryUserSalt(String username);

    /**
     * 查询用户个人信息
     * @param username 学号
     * @return 用户个人信息
     */
    Map<String,Object> queryUserInfo(String username);

    /**
     * 查询当前用户申请社团的审核信息
     * @param username 学号
     * @return 当前用户申请社团的审核信息
     */
    List<Map<String,Object>> queryUserAssExa(String username);

    /**
     * 根据username查询用户信息
     * @param username 学号
     * @return 用户个人信息
     */
    User queryUserUsername(String username);

    /**
     * 根据email查询用户信息
     * @param email
     * @return 用户个人信息
     */
    User queryUserEmail(String email);
}
